/*给定一个长度为 n 的整数 山脉 数组 arr ，其中的值递增到一个 峰值元素 然后递减。

返回峰值元素的下标。

你必须设计并实现时间复杂度为 O(log(n)) (二分查找) 的解决方案。*/

public class PeakIndexInMountainArray {

    public static int peakIndexInMountainArray(int[] arr) {
        int left = 0;
        int right = arr.length - 1;

        while (left < right) {
            int mid = left + (right - left) / 2;
            if (arr[mid] < arr[mid + 1]) {
                //峰值在右
                left = mid + 1;
            }else {
                //峰值在左或当前
                right = mid;
            }
        }
        return left;

    }

    public static void main(String[] args) {
        int[] arr = {0, 1, 0};
        System.out.println(peakIndexInMountainArray(arr)); // 输出: 1

        int[] arr2 = {0, 2, 1, 0};
        System.out.println(peakIndexInMountainArray(arr2)); // 输出: 1

        int[] arr3 = {0, 10, 5, 2};
        System.out.println(peakIndexInMountainArray(arr3)); // 输出: 1
    }
}
